package String;

/**
 * 描述
 * 对于一个长度为 n 字符串，我们需要对它做一些变形。
 *
 * 首先这个字符串中包含着一些空格，就像"Hello World"一样，然后我们要做的是把这个字符串中由空格隔开的单词反序，同时反转每个字符的大小写。
 *
 * 比如"Hello World"变形后就变成了"wORLD hELLO"。
 *
 * 数据范围: 1≤n≤10^6
 *   , 字符串中包括大写英文字母、小写英文字母、空格。
 * 进阶：空间复杂度 O(n)O(n) ， 时间复杂度 O(n)O(n)
 *
 * */
import java.util.*;

class BM83 {
    public String trans(String s, int n) {

        String[] strArray = s.split(" ", -1);

        StringBuilder strbuild = new StringBuilder();

        for (int i = strArray.length - 1; i >= 0; i--) {
            strbuild.append(reverse(strArray[i])); //数组转换为字符串
            //最后一个字符串后面不再附加空格
            if(i==0) {
                break;
            }
            //字符串之间附加空格
            strbuild.append(" ");
        }
        return strbuild.toString();
    }

    //大小写转换
    private String reverse(String s){
        StringBuilder res= new StringBuilder();
        for(char ch:s.toCharArray()){
            if(Character.isLowerCase(ch)){
                res.append(Character.toUpperCase(ch));
                continue;
            }
            if(Character.isUpperCase(ch)){
                res.append(Character.toLowerCase(ch));
                continue;
            }
        }
        return res.toString();
    }


}